package com.atguigu.gmall.product.service.impl;

import com.alibaba.fastjson.JSON;
import com.atguigu.gmall.common.util.JSONs;
import com.atguigu.gmall.product.entity.SpuSaleAttr;
import com.atguigu.gmall.product.vo.ValueSku;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.atguigu.gmall.product.entity.SkuSaleAttrValue;
import com.atguigu.gmall.product.service.SkuSaleAttrValueService;
import com.atguigu.gmall.product.mapper.SkuSaleAttrValueMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
* @author lfy
* @description 针对表【sku_sale_attr_value(sku销售属性值)】的数据库操作Service实现
* @createDate 2023-07-11 15:27:09
*/
@Service
public class SkuSaleAttrValueServiceImpl extends ServiceImpl<SkuSaleAttrValueMapper, SkuSaleAttrValue>
    implements SkuSaleAttrValueService{


    @Autowired
    SkuSaleAttrValueMapper skuSaleAttrValueMapper;


    @Override
    public List<SpuSaleAttr> getSpuSaleAttrAndValueAnnotationSku(Long skuId, Long spuId) {

        List<SpuSaleAttr> spuSaleAttrs = skuSaleAttrValueMapper
                .getSpuSaleAttrAndValueAnnotationSku(skuId,spuId);
        return spuSaleAttrs;
    }

    @Override
    public String getValueSkuJson(Long spuId) {


        List<ValueSku> valueSkus =  skuSaleAttrValueMapper.getValueSkuJson(spuId);

        //list转为map，map的key是 combo的值，value是skuId的值
        Map<String, Long> map = valueSkus.stream()
                .collect(Collectors.toMap(ValueSku::getCombo, ValueSku::getSkuId));


        //不要用 fastjson。
        String jsonStr = JSONs.obj2JsonStr(map);

        return jsonStr;
    }
}




